Skip to content

--allow-unlisted passthrough for pinned URLs outside the catalog - #178

Merged
SELAT-DEV merged 1 commit into
mainfrom
feat/allow-unlisted-pin
Aug 29, 2026
Merged

--allow-unlisted passthrough for pinned URLs outside the catalog#178
SELAT-DEV merged 1 commit into
mainfrom
feat/allow-unlisted-pin

Conversation

@SELAT-DEV

Copy link
Copy Markdown
Contributor

Why

Companion to selat-discovery feat/allow-unlisted-pin (synthesizeUnlistedPin + reliability-probe eligibility): selat run --endpoint <url> refuses URLs outside the federated catalog, which the 2026-08-29 sweep measured at 32% of real router-settled demand. The supported buyer path is selat-cli + the plugin; this PR forwards the explicit opt-out so that path can pay what the router already serves. PRD: selat-allow-unlisted-prd.md.

What

selat run --endpoint <url> --allow-unlisted forwards the opt-out to rank.mjs. Guards that make the flag safe to offer:

  • Parse-time: --allow-unlisted without --endpoint is an error — the flag applies to one pinned URL or nothing.
  • Seam: rankPickArgv never emits the flag without a pin, so an intent-driven run cannot widen into unlisted territory (pinned by test).
  • Refusal UX: the endpoint-not-in-catalog error now names the flag ("Pass --allow-unlisted to pin it anyway — live 402 supplies the terms; spend caps still apply").
  • Happy path stays quiet: rank's stderr is captured and only surfaced on failure, so the opted-in flow carries no warning nag; provenance rides as data (unlisted: true in --json output) instead.
  • Spend guards unchanged: flat $0.10 no-price default cap, --max-amount last-wins under the $1 hard ceiling, validate-before-sign, Circle policy caps.

Help/usage text updated; KNOWN_RUN_FLAGS gains the flag.

Testing

4 new tests (test/run-allow-unlisted.test.mjs) pinning the parse, the argv seam (present with a pin, absent without, defensive drop when set without a pin), and the refusal message. Full suite: 536/536.

Notes

  • Ledger records do not yet carry the unlisted marker — that needs a small selat-pay flag with an ordering-safe rollout (selat-pay parser first, discovery hint second); deferred to the next selat-pay release, documented in the PRD.
  • Rides the standard release train after merge: discovery patch → cli propagation patch → plugins closure PR.

🤖 Generated with Claude Code

…atalog

Companion to selat-discovery's synthesizeUnlistedPin: selat run --endpoint
<url> --allow-unlisted forwards the opt-out to rank.mjs. Parse-time guard
refuses the flag without --endpoint; rankPickArgv never emits it without a
pin, so an intent-driven run cannot widen into unlisted territory. The
not-in-catalog refusal now names the flag. Every spend guard is unchanged:
the flat $0.10 no-price default cap, --max-amount last-wins under the $1
hard ceiling, validate-before-sign, and Circle policy caps.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@SELAT-DEV
SELAT-DEV merged commit 6dcd6bd into main Aug 29, 2026
1 check passed
SELAT-DEV pushed a commit that referenced this pull request Aug 29, 2026
Ships --allow-unlisted (#178): selat run --endpoint can pin an https URL no
federated catalog lists, behind an explicit per-call flag. Bumps
@selat-ai/selat-discovery to ^0.24.8 (the synthesizeUnlistedPin contract and
unlisted reliability probing).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants